/**
 * 文本窗口
 * 显示文字
 * 
 * 
 * 
 */
var textwindow = function () {
    var tw =  $('#textwindow').get(0).getContext('2d'),
		textWindowX = 10, 					// textwindow左上角x坐标
		textWindowY = 450,					// textwindow左上角y坐标
		textWindowWidth = 780,				// textwindow宽
		textWindowHeight = 140,				// textwindow高
		paddingTop = 20,					// 文本左下角到textwindow最上部分的空白
		paddingLeft = 50,					// 文本左下角到textwindow最左部分的空白
		timeout = 50,          				// 每个字的时间间隔
		fontColor = "white",    			// 字体颜色
		fontSize = "25",                	// 字号
		font = "微软雅黑",      			// 字体
		fontShadowFlag = true;				// 是否有文字阴影
		textWindowColor = '#111133',		// 窗口颜色
		textWindowShadow = 20,				// 窗口阴影宽度
		textWindowShadowColor = '#777799',	// 窗口阴影颜色
		
		// 绘制文字窗口背景函数
		drawTextwindow = function () {
			tw.save();
            tw.shadowBlur = textWindowShadow;		
            tw.shadowColor = textWindowShadowColor;
            tw.fillStyle = textWindowColor;
            tw.globalAlpha = 0.5;
            tw.fillRect(textWindowX,textWindowY,textWindowWidth,textWindowHeight);
            tw.restore();
		},
		// 开启阴影函数
		shadowOn = function () {
			tw.shadowBlur = 3;		
			tw.shadowColor = '#000000';
			tw.shadowOffsetX = 3;
			tw.shadowOffsetY = 3;
		},
		// 绘制文字函数
		drawText = function (text) {
			sys.changeStatus('runscript');
			var sub = 0,
				textArray = [],
				x = textWindowX+paddingLeft,
				y = textWindowY+paddingTop;
			textArray = text.split('');
            tw.font = fontSize+"px"+" "+font;
            tw.fillStyle = fontColor;
			tw.textAlign = "start";		
			tw.textBaseline = "top";		// 这两个参数是为了将输出点定在左上角
			// 是否开启了文字阴影
			if(fontShadowFlag){
				shadowOn();	
			}
            //循环输出
            var timer = setInterval(function(){
				
				// 判断文字是否超出了右边界，未超出则右移一个字符输出
                if(x<textWindowX+textWindowWidth-paddingLeft-fontSize)
                {
                    tw.fillText(textArray[sub], x, y);
                    x += tw.measureText(textArray[sub]).width;
                    sub += 1;
                }
				// 超出则换行
                else
                {
                    x = textWindowX + paddingLeft;
                    y += parseInt(fontSize) + 5;
					
                    tw.fillText(textArray[sub],x,y);
                    x += tw.measureText(textArray[sub]).width;
                    sub += 1;
                }
				
                if (sub >= textArray.length){
                    sys.changeStatus('getscript');
                    clearInterval(timer);
                }
            },timeout)
		},
		// 直接绘制文字函数
		drawTextDirect = function (text) {
			sys.changeStatus('runscript');
			var sub = 0,
				textArray = [],
				x = textWindowX+paddingLeft,
				y = textWindowY+paddingTop;
			textArray = text.split('');
			tw.font = fontSize+"px"+" "+font;
            tw.fillStyle = fontColor;
			tw.textAlign = "start";		
			tw.textBaseline = "top";		// 这两个参数是为了将输出点定在左上角
			// 是否开启了文字阴影
			if(fontShadowFlag){
				shadowOn();	
			}
			for (sub = 0; sub < textArray.length; ++sub) {
				// 判断文字是否超出了右边界，未超出则右移一个字符输出
				if(x<textWindowX+textWindowWidth-paddingLeft-fontSize)
				{
					tw.fillText(textArray[sub], x, y);
					x += tw.measureText(textArray[sub]).width;
				}
				// 超出则换行
				else
				{
					x = textWindowX + paddingLeft;
					y += parseInt(fontSize) + 5;
					
					tw.fillText(textArray[sub],x,y);
					x += tw.measureText(textArray[sub]).width;
				}
			}
			sys.changeStatus('getscript');
		},
		that = {
		// 显示文字方法
        showText: function(text){
            tw.clearRect(textWindowX - textWindowShadow,textWindowY - textWindowShadow,
				textWindowWidth + textWindowShadow * 2,textWindowHeight + textWindowShadow * 2);
			// 绘制Textwindow
            drawTextwindow();
			// 绘制文字
            drawText(text);
            /*
            for(var i=0;i<textArray.length;i++){
                setTimeout(function(){
                    if(x<textWindowX+textWindowWidth-paddingLeft-fontSize)
                    {
                        tw.fillText(textArray[sub],x,y);
                        x += tw.measureText(textArray[sub]).width;
                        sub += 1;
                    }
                    else
                    {
                        x = textWindowX+paddingLeft;
                        y += parseInt(fontSize) + 5;
                        tw.fillText(textArray[sub],x,y);
                        x += tw.measureText(textArray[sub]).width;
                        sub += 1;
                    }
                },time);
                time += timeout;
            }
            */
        },
		// 直接输出文字
		showTextDirect: function(text) {
			tw.clearRect(textWindowX-20,textWindowY-20,textWindowWidth+40,textWindowHeight+40);
			// 绘制Textwindow
            drawTextwindow();
			// 绘制文字
            drawTextDirect(text);
		},
		// 快速跳过文字
        skipText: function (text) {
        },
		// 显示选项文字
		selectText: function (commandString){
			tw.clearRect(textWindowX-20,textWindowY-20,textWindowWidth+40,textWindowHeight+40);
			sys.changeStatus("waitselect");
			var selectList = commandString.split(','),
				x = textWindowX + paddingLeft,
				y = textWindowY + paddingTop;
			// 绘制Textwindow
			drawTextwindow();
			// 是否开启了文字阴影
			if(fontShadowFlag){
				shadowOn();	
			};
			// 输出选项
			for (var i = 0; i < selectList.length; ++i){
				var text = selectList[i].split(':');
				tw.font = fontSize+"px"+" "+font;
				tw.fillStyle = fontColor;
				tw.textAlign = "start";		
				tw.textBaseline = "top";		// 这两个参数是为了将输出点定在左上角
				tw.fillText(text[0],x,y);
				y += parseInt(fontSize) + 5;
			};
		},
		// 设置字号
		setFontSize: function (size) {
			fontSize = '' + size;
		}
    }
    return that;
}